1
Chọn các hàng cần giữ
DSAI2202Lab 7: Reasoning Across Relationships

Hệ thống đăng ký của UniLearn và LMS không chứa cùng các mã sinh viên. Nhóm cần một số báo cáo, mỗi báo cáo có câu trả lời khác nhau cho câu hỏi “Những hàng nguồn nào phải xuất hiện?”

Tái sử dụng cơ sở dữ liệu của Lab 6

Nếu bạn đã chạy lab6_7_setup.sql trong Lab 6, hãy giữ nguyên dữ liệu đó. Nếu chưa, hãy mở tệp cài đặt dùng chung do giảng viên cung cấp trong pgAdmin và chạy một lần. Chọn lab6_7 trong mỗi kết nối Query Tool mới.

Bắt đầu với phép Join bạn đã biết

  1. Kiểm tra students và lms_roster: 22 mã đăng ký và 6 mã LMS.
  2. Chạy INNER JOIN theo quy tắc khớp của Lab 6.
  3. Xác định bốn mã có trong cả hai nguồn.
  4. Giải thích vì sao kết quả này không thể là danh sách đầy đủ từ bất kỳ nguồn nào.

Năm yêu cầu báo cáo

Liệt kê các tài khoản dùng chung; giữ mọi sinh viên trong hệ thống đăng ký; giữ mọi tài khoản LMS; đối chiếu cả hai nguồn; tạo các lựa chọn sinh viên–môn học. Bạn sẽ viết các truy vấn INNER, LEFT, RIGHT, FULL và CROSS JOIN cho những yêu cầu này.

✍️ Dự đoán ngữ cảnh còn thiếu
S103 đã đăng ký nhưng không có tài khoản LMS. S901 được nhập vào LMS nhưng không có trong hệ thống đăng ký. Mỗi trường hợp sẽ thuộc vị trí nào trong một báo cáo đầy đủ?
Tài khoản dùng chung
SET search_path TO lab6_7;

SELECT s.student_id AS registry_id, s.student_name,
       r.student_id AS lms_id, r.lms_name
FROM students AS s
INNER JOIN lms_roster AS r
  ON s.student_id = r.student_id
ORDER BY s.student_id;
Kiểm tra các mã đã khớp

Bốn hàng: S101, S102, S105 và S121. Mỗi mã là duy nhất trong cả hai bảng, nên mỗi cặp khớp xuất hiện một lần. Báo cáo này chỉ chứa các tài khoản dùng chung.

Uma (S121) có tài khoản LMS dù không có đăng ký môn học nào. Việc khớp tài khoản không chứng minh có tham gia môn học.